Matrix Factorization Model 又稱為矩陣分解法,為推薦系統中協同過濾策略的經典算法之一,其主要想法是基於使用者和商品的互動評分向量化使用者和商品的潛在因素,越高的評分代表該商品應該被推薦。模型可以由矩陣作為呈現,矩陣的ㄧ列代表一個使用者,矩陣的ㄧ行代表一個商品,矩陣的元素代表該使用者和商品的互動評分。模型的資料來源有兩種,一種為品質較好的明確回饋(explicit feedback),包含使用者明確給出針對商品的評分,像是 YouTube 的按讚機制、Google Map 商家的評分機制等,此種資料雖然明確卻不容易取得,數量也會遠小於使用者和商品的數量,因此容易形成稀疏矩陣(sparse matrix),另一種資料為隱性回饋(implicit feedback),為間接可以代表使用者喜好的使用者行為包含使用者購買紀錄、瀏覽紀錄、搜尋紀錄等,通常會以這些行為存在與否作為紀錄,容易形成密集矩陣(dense matrix)。
Matrix Factorization Model 會將使用者和商品映射到一個共同的向量空間並有著相同的維度,並將向量間的內積用於模擬使用者和商品間互動評分。其定義每一個商品
此種將矩陣拆解為使用者矩陣和商品矩陣的作法類似 奇異值分解(singular value decomposition),但由於 SVD 並不能有效針對稀疏矩陣進行分解,而替代的代入法(Imputation)如代入平均值等會導致增加相當大量的資料,並且不容易確保可信度。因此 Matrix Factorization 的做法是直接針對互動評分進行建模,並且透過正則化(regularization)來避免過擬合。最終的模型公式如下:
其中
Simon Funk 讓透過隨機梯度下降 (Stochastic Gradient Decent, SGD)求得模型的
透過誤差修改參數往模型公式的梯度相反方向更新,並透過
經過多次的更新,誤差會達到收斂,即代表訓練完成。
在觀測的互動評分中,除了潛在因素會影響分數以外,也會受到資料品質和數量不平衡造成偏差,導致模型的預測會有偏差,這些偏差對於模型學習的參數應該是獨立的,因此應該另外加入偏差參數,以便模型可以接受這些偏差。偏差的建立會來自於使用者或是商品,衡量一位使用者對於商品的評分會是源於所有商品的平均評分加上商品自身相較平均的評分差距及使用者本身的標準不同所造成的評分差距,例如所有的電影評分是 3.5 分而復仇者聯盟較平均高過 1 分並且 Joe 這位使用者相較嚴格多扣了 1.3 分則造成的評分即為 3.5 + 1 - 1.3 。因此實際互動評分的偏差會來自總體平均的評分 + 商品與平均評分的差距 + 使用者對於商品的評分與平均評分的差距:
而實際的評分為:
因此加入偏差的模型公式為會修改如下:
針對明確回饋資料不多的冷啟動問題(Cold Start Problem),Matrix Factorization 模型會需要加入隱性回饋資料,如使用者的購買紀錄、網頁瀏覽紀錄等作為推薦依據,這些資料為了簡化複雜會以布林型態作為判斷存在或不存在該行為,針對一個使用者
正則化的公式如下:
除此之外,使用者的屬性也是一項可以列入當作依據的資訊,同樣考慮一個使用者屬性存在與否會以布林來表示,一個使用者
而預測的互動評分可以修正如下:
除了使用者以外,對於商品端缺少的資訊也可以透過這樣的方法處理。